package com.chub.statemachine.fsm;

/**
 * @author : chub
 * @version : V1.0.0
 * @fileName : PaymentDomainServiceImpl.java
 * @description : 支付领域域服务
 * 在支付业务代码中的使用：只需要paymentModel.transferStatusByEvent(PaymentEvent.valueOf(message.getEvent()))
 * @createTime : 2025-04-15 15:46
 */
public class PaymentDomainServiceImpl implements PaymentDomainService {

    /**
     * 支付结果通知
     */
    public void notify(PaymentNotifyMessage message) {
        PaymentModel paymentModel = loadPaymentModel(message.getPaymentId());
        try {

            // 状态推进
            paymentModel.transferStatusByEvent(PaymentEvent.valueOf(message.getEvent()));
            savePaymentModel(paymentModel);
            // 其它业务处理
            // ... ...
        } catch (StateMachineException e) {
            // 异常处理
            // ... ...
        } catch (Exception e) {
            // 异常处理
            // ... ...
        }
    }

    public PaymentModel loadPaymentModel(String paymentId) {
        return new PaymentModel();
    }

    public void savePaymentModel(PaymentModel paymentModel) {
        // 保存支付单模型

    }
}